import os
import subprocess

IN_DATA_DIR = "E:/AVA/videos_15min"
OUT_DATA_DIR = "E:/AVA/frames"

# 确保输出目录存在
if not os.path.exists(OUT_DATA_DIR):
    os.makedirs(OUT_DATA_DIR)

# 遍历输入目录中的所有视频文件
for video_path in os.listdir(IN_DATA_DIR):
    video_full_path = os.path.join(IN_DATA_DIR, video_path)

    # 提取视频文件名（不含路径）
    video_name = os.path.basename(video_path)

    # 移除文件扩展名
    if video_name.endswith(".webm"):
        video_name_no_ext = video_name[:-5]
    else:
        video_name_no_ext = video_name[:-4]

        # 创建输出文件夹
    out_video_dir = os.path.join(OUT_DATA_DIR, video_name_no_ext)
    if not os.path.exists(out_video_dir):
        os.makedirs(out_video_dir)

        # 构建输出文件名模板
    out_name = os.path.join(out_video_dir, f"{video_name_no_ext}_%06d.jpg")

    # 调用ffmpeg将视频转换为图片序列
    cmd = [
        "ffmpeg",
        "-i", video_full_path,
        "-r", "30",
        "-q:v", "1",
        out_name
    ]
    subprocess.run(cmd, check=True)  # 使用check=True以便在命令失败时抛出异常

print("Processing completed.")